[組織ポリシー]リソース ロケーションの制限の組織ポリシーについて調べてみた

[組織ポリシー]リソース ロケーションの制限の組織ポリシーについて調べてみた

Clock Icon2024.07.30

はじめに

数ある組織ポリシーの中で、今回取り上げるのはGoogle Cloud Platform - リソース ロケーションの制限というポリシーです。
https://cloud.google.com/resource-manager/docs/organization-policy/org-policy-constraints?hl=ja#constraints-supported-by-multiple-google-cloud-services
本ポリシーを用いると、リソースを作成できるロケーション(リージョン)を制限することができます(デフォルトでは全てのリージョンにリソースを作成することができます)。

組織ポリシー名 内容 制約
Google Cloud Platform - リソース ロケーションの制限 このリスト型制約は、ロケーション ベースの Google Cloud リソースを作成できる一連のロケーションを定義します。デフォルトでは、任意のロケーションにリソースを作成できます。この制約に関するポリシーでは、許可または拒否するロケーションとして、asia や europe などのマルチリージョン、us-east1 や europe-west1 などのリージョンを指定できます。マルチリージョンを許可または拒否しても、それらに含まれるすべてのサブロケーションまで許可または拒否されることにはなりません。たとえば、ポリシーで us マルチリージョン(一部のストレージ サービスなどのマルチリージョン リソースを指す)が拒否されていても、リージョン ロケーション us-east1 には依然としてリソースを作成できます。一方、in:us-locations グループは us リージョン内のすべてのロケーションを含み、すべてのリージョンをブロックするために使用できます。値グループを使用してポリシーを定義することをおすすめします。値グループ(リソースのロケーションを簡単に定義できるようにするために Google によってキュレートされた、ロケーションのコレクション)を指定できます。組織のポリシーで値グループを使用するには、エントリの先頭に文字列 in: を付加し、その後に値グループを配置します。たとえば、米国内にのみ存在するリソースを作成するには、使用可能な値のリストに in:us-locations を設定します。ロケーション ポリシーで suggested_value フィールドが使用されている場合は、リージョンを設定する必要があります。指定した値がリージョンの場合は、ゾーンリソースの UI にこのリージョン内のすべてのゾーンが事前に入力されます。 constraints/gcp.resourceLocations

概要

できること

本ポリシーGoogle Cloud Platform - リソース ロケーションの制限を設定することで、リソース(ComputeのインスタンスやCloud Storageバケットなど)を作成するリージョンやゾーンを制限することができます。 設定はリージョン、ゾーン単位ですることができますが多々あるリージョンやゾーンを容易に設定するために値グループというリージョン・ゾーンをある程度のグループ(東京グループ、北米グループ)が用意されています。
https://cloud.google.com/resource-manager/docs/organization-policy/defining-locations?hl=ja#value_groups
この値グループを用いて設定することで容易にリージョン制限を設定することができます。
例えば、東京リージョンだけにリソース作成を許可したい場合はasia-northeast1-locationsという設定値を用います。もう少し広げてアジア全域(香港、東京、台湾など)の場合はasia-locationsという設定値があります。他にも北米やヨーロッパなど様々なグループが作成されています。
この値グループを用いることで網羅的に本ポリシーの制限を設定することができます、

サービスとの兼ね合い

一部のリソースやサービスは、地域制限の対象外となります。これには、グローバルに提供されるサービスや特定のマネージドサービスが含まれます。本ポリシーを適用した際のサービスごとの動作は以下に記載があるので適用する場合は一度確認した方がよいと考えます。
https://cloud.google.com/resource-manager/docs/organization-policy/defining-locations-supported-services?hl=ja

設定してみた

実際に設定してみて動作を見てみました。
設定値

  • 東京リージョンだけにリソース作成許可

確認したこと

  • Compute、BigQueryのリソース作成が東京リージョンに制限できるか確認

まずはポリシーを設定

東京リージョンだけに許可する設定には値グループasia-northeast1-locationsを用います。
Google Cloud Platform - リソース ロケーションの制限ポリシーの設定画面にてルールの編集から以下を設定します。

設定項目 設定値
ポリシーの値 カスタム
ポリシーの種類 許可
カスタム値 asia-northeast1-locations

スクリーンショット 2024-07-30 21.30.28

Computeリソースを作成してみる

インスタンス作成画面に行って、リージョンのプルダウンをクリックしてみました。
スクリーンショット 2024-07-30 21.32.55

上記の通り、東京リージョンしか選択できないようになっていました。(ちょっと驚きました)

BigQueryのデータセットを作成してみる

Computeがいい感じに制限してくれていたのでBigQueryもワクワクして見てみました。
データセット作成画面ですが、マルチリージョンをまず指定してみました。東京リージョンしか許可していないのでダメだと思いますが如何に・・・

スクリーンショット 2024-07-30 21.36.11

violates constraint constraints、よくある組織ポリシー制約違反時のメッセージが出ましたね。 ではリージョンの方をクリックしてみます。
スクリーンショット 2024-07-30 21.39.11

リージョンを選択するプルダウンでは、Computeと異なり東京リージョン以外のリージョンも表示されていました。
本当に制限できているのか一応asia-east1(台湾)を選択してデータセット作成してみます。
スクリーンショット 2024-07-30 21.41.25

ちゃんと制約違反のメッセージが出力されました。

まとめ

まずは3行まとめです。

  • 値グループというリージョン・ゾーンをまとめたグループが用意されている
  • 各サービスごとにリージョン制限の対応状況は異なるため注意
  • GUIだと(リージョン選択の)動作が各サービスで違うかもしれない

ComputeとBigQueryしか設定を試していませんが上記2サービスではそれぞれGUIでは若干動作が異なっていましたがどちらもリージョン制限されているということは変わりませんでした。
本ポリシーを用いることでリソース作成できるリージョンを制限できるということは、Google Cloudの運用上リソースがあっちこっちに作成されることを統制できるのでとても有用だと考えます。
が、一方で使用しているサービスが対応しているか・リージョン制限をして正常に動作するかという点は十分に検証をする必要があると考えます。この点は特に注意が必要です。
本記事が組織ポリシーで困っている方の一助になれば嬉しいです。それではまた。

参考

https://cloud.google.com/resource-manager/docs/organization-policy/defining-locations?hl=ja#overview

Share this article

facebook logohatena logotwitter logo

© Classmethod, Inc. All rights reserved.